반응형 이미지
해상도 전환(resolution switching)
- 크기만 다른 동일한 이미지를 보여주고 싶을 때 사용하는 방법
- 화면에 어울리지 않게 일부러 큰 이미지를 사용하여 낭비를 하거나, 작은 사이즈의 이미지를 확대하는 것은 좋지 않다.
- 해상도 전환은 다양한 스크린, 다바이스에서 보유주기 위한 방법
- 해결방법: 1. 벡터 그래픽 이미지 사용, 2.
<img>
요소에srcset
와 sizes 속성 이용
srcset
srcset = "./img/screen1.png 360w",
"./img/screen2.png 600w"
/* 이미지 경로 + 공백 + 고육 픽셀 너비 작성 */
/* 같은 비율의 다양한 이미지 크기를 가지는 동일 이미지들이 최소 2개 이상 명시하는 속성 */
/* pw 단위가 아닌 w,x를 사용 */
w
서술자
- 이미지의 원본 넓이를 브라우저에게 알려줌
w
서술자가 적용되면 이미지 크기는 뷰포트의 100%를 차지(width, sizes 등 속성으로 변경 가능)w
서술자를 사용한 경우src
속성을 무시(만약srcset
속성이 사용 불가능한 브라우저일 경우 대비해서src
를 작성)
x
서술자
- 화소의 밀도, 디바이스 화소 밀도에 따른 이미지를 로딩하도록 브라우저에게 알려줌
- 화소밀도(pixel density)
- 동일한 면적에 들어가는 화소의 수
- 화소의 갯수가 많을 수록 더 높은 해상동의 기기
- 서술자를 포함하지 않은 경우 기본값인
1x
로 간주 w
,x
는 동시에 사용이 불가능하다.
같은 크기, 다른 해상도: srcset
와 서술자 사용(크기와 해상도는 다르다.)
- 모두가 이미지를 실제 사이즈로 동일하게 봐야 할 때
x
서술자를 이용하여 브라우저에 적절한 이미지를 선택
info
srcset은 브라우저에게 이미지 선택권을 위임하는 속성
srcset 속성은 원하는 이미지를 선택 및 강제할 수 없다.
브라우저 자체가 상황에 맞게 이미지를 선택해준다.
만약 해상도에 맞게 출력할 결과를 정하고 싶다면 CSS에서 @media를 이용하면 된다.
sizes
- 미디어 조건문이 true일 경우, 이미지가 차지하게 될 사이즈를 브라우저에게 알려준다.(
px
,em
,vw
사용가능%
는 사용 불가능) - 미디어 조건문이 없는 마지막 줄은 앞의 조건문 값이 false일 경우에 동작한다.
srcset
이 비어있거나 너비 서술자를 사용하지 않으면 효과가 없다.size
와width
를 같이 작성할 경우width
를 우선
danger
CSS 충돌 주의 size 속성을 사용할 때, CSS를 통한 이미지의 사이즈를 컨트롤 하는 방법과 충돌할 수 있다.